<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // this在全局作用域下指向什么，但是，开发中很少直接在全局作用域下去使用this，通常都是在函数中使用
      // 所有的函数在被调用时，都会创建一个执行上下文：
      // 这个上下文中记录着函数的调用栈、函数的调用方式、传入的参数信息等；this也是其中的一个属性；
      console.log(this); // window
      var name = "why";
      console.log(this.name); // why
      console.log(window.name); // why

      //定义一个函数，我们采用三种不同的方式对它进行调用，它产生了三种不同的结果
      // 定义一个函数
      function foo() {
        console.log(this);
      }

      // 1.调用方式一，直接调用
      //   foo(); // window

      // 2.调用方式二，将 foo放到一个 对象中，再调用
      var obj = {
        name: "pengfan",
        foo: foo,
      };
      obj.foo(); // obj对象

      // 3.调用方式三：通过call/apply调用
      foo.call("abc"); //String {"abc"}对象
    </script>
  </body>
</html>
